package StackAndQueue;

import java.util.Stack;

/**
 * @ Author     ：侯耀祖
 * @ Description：
 */
public class isValid {
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();
        if (s.length() % 2 != 0){
            return false;
        }
        for (int i = 0; i < s.length(); i++) {
            char a = s.charAt(i);
//            if (a == '(' || a == '[' || a == '{'){
//                stack.push(s.charAt(i));
//            }
//            if (a == ')'){
//                if (stack.isEmpty()){
//                    return false;
//                }
//                if (stack.peek() == '('){
//                    stack.pop();
//                } else {
//                    return false;
//                }
//            }
//            if (a == ']'){
//                if (stack.isEmpty()){
//                    return false;
//                }
//                if (stack.peek() == '['){
//                    stack.pop();
//                } else {
//                    return false;
//                }
//            }
//            if (a == '}'){
//                if (stack.isEmpty()){
//                    return false;
//                }
//                if (stack.peek() == '{'){
//                    stack.pop();
//                } else {
//                    return false;
//                }
//            }
            if (a == '('){
                stack.push(')');
            } else if (a == '[') {
                stack.push(']');
            } else if (a == '{') {
                stack.push('}');
            } else if ( stack.isEmpty() || stack.peek() != a) {
                return false;
            } else {
                stack.pop();
            }
        }

        return stack.empty();
    }
}
